﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace QLKS
{
    public partial class fCapNhatPhong : Form
    {
        public fCapNhatPhong()
        {
            InitializeComponent();
            _timer.Tick += new EventHandler(timer_Tick);
            _timer.Interval = 300;
            _timer.Enabled = true;
            _timer.Start();
        }

        Timer _timer = new Timer();//cập nhật trạng thái đăng nhập của người dùng
        private bool _ktdangnhap;//biến tạm kiểm tra trạng thái đăng nhập

        /// <summary>
        /// Lấy danh sách loại phòng thêm vào combobox loại phòng
        /// </summary>
        private void cbloaiphong_itemUpdate()
        {
            try
            {
                LayDuLieu dl = new LayDuLieu();
                SqlDataReader dr = dl.LayTruongDuLieu("SELECT LoaiPhong FROM LOAIPHONG");
                cbloaiphong.Items.Clear();
                while (dr.Read())
                {
                    cbloaiphong.Items.Add(dr.GetString(0));
                }
                KetNoi.NgatKetNoi();
            }
            catch { }
            cbloaiphong.SelectedIndex = 0;
        }

        /// <summary>
        /// Kiểm tra người dùng đăng nhập chưa, nếu đăng nhập rồi thì cho phép thao tác, nếu chưa thì không cho phép thao tác
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void fCapNhatPhong_Load(object sender, EventArgs e)
        {
            tbsophong.Clear();
            tbghichu.Clear();
            if (MainForm.ktdangnhap == true) //người dùng đã đăng nhập thì cho phép thực hiện các truy vấn
            {
                rbthem.Enabled = true;
                rbsua.Enabled = true;
                rbxoa.Enabled = true;
                tbsophong.Enabled = true;
                cbloaiphong.Enabled = true;
                cbloaiphong_itemUpdate();
                tbghichu.Enabled = true;
                lbsophong.Enabled = true;
                lbloaiphong.Enabled = true;
                lbghichu.Enabled = true;
                rbthem.Checked = true;
                btthem.Enabled = true;
                btxoa.Hide();
                btsua.Hide();
                _ktdangnhap = MainForm.ktdangnhap;
            }
            else //ngược lại không cho thực hiện các truy vấn
            {
                rbthem.Enabled = false;
                rbsua.Enabled = false;
                rbxoa.Enabled = false;
                tbsophong.Enabled = false;
                cbloaiphong.Enabled = false;
                tbghichu.Enabled = false;
                lbsophong.Enabled = false;
                lbloaiphong.Enabled = false;
                lbghichu.Enabled = false;
                btthem.Enabled = false;
                btsua.Enabled = false;
                btxoa.Enabled = false;
                _ktdangnhap = MainForm.ktdangnhap;
            }
        }

        /// <summary>
        /// Form thực hiện chức năng thêm
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rbthem_CheckedChanged(object sender, EventArgs e)
        {
            label1.Text = "";
            tbsophong.Enabled = true;
            tbsophong.Clear();
            cbloaiphong.Enabled = true;
            cbloaiphong_itemUpdate();
            tbghichu.Enabled = true;
            tbghichu.Clear();
            btthem.Show();
            btxoa.Hide();
            btsua.Hide();
        }

        /// <summary>
        /// Form thực hiện chức năng xóa
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rbxoa_CheckedChanged(object sender, EventArgs e)
        {
            label1.Text = "";
            tbsophong.Enabled = true;
            tbsophong.Clear();
            cbloaiphong.Enabled = false;
            tbghichu.Enabled = false;
            tbghichu.Clear();
            btthem.Hide();
            btxoa.Show();
            btsua.Hide();
        }

        /// <summary>
        /// Form thực hiện chức năng sửa
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rbsua_CheckedChanged(object sender, EventArgs e)
        {
            label1.Text = "";
            tbsophong.Enabled = true;
            tbsophong.Clear();
            cbloaiphong.Enabled = true;
            cbloaiphong_itemUpdate();
            tbghichu.Enabled = true;
            tbghichu.Clear();
            btthem.Hide();
            btxoa.Hide();
            btsua.Show();
        }

        /// <summary>
        /// Kiểm tra sự hợp lệ của số phòng và tự động điền thông tin khi người dùng cần sửa/xóa một phòng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tbsophong_TextChanged(object sender, EventArgs e)
        {
            XuLyCapNhatPhong xlcnp = new XuLyCapNhatPhong();
            if (rbthem.Checked == true)
            {
                label1.Text = xlcnp.KiemTraSoPhong_Them(tbsophong.Text);
            }
            else if (rbxoa.Checked == true || rbsua.Checked == true)
            {
                string temp = null;
                int i = 0;
                label1.Text = xlcnp.KiemTraSoPhong_XoaSua(tbsophong.Text);
                try
                {
                    LayDuLieu dl = new LayDuLieu();
                    SqlDataReader dr1 = dl.LayTruongDuLieu("SELECT LoaiPhong FROM PHONG WHERE SoPhong='" + tbsophong.Text + "'");
                    SqlDataReader dr2 = dl.LayTruongDuLieu("SELECT GhiChu FROM PHONG WHERE SoPhong='" + tbsophong.Text + "'");
                    while (dr1.Read())
                    {
                        temp = dr1.GetString(0);
                    }
                    while (i < cbloaiphong.Items.Count)
                    {
                        cbloaiphong.SelectedIndex = i;
                        if (String.Compare(cbloaiphong.SelectedItem.ToString(), temp) == 0)
                        {
                            break;
                        }
                        i++;
                    }
                    while (dr2.Read())
                    {
                        tbghichu.Text = dr2.GetString(0);
                    }
                    KetNoi.NgatKetNoi();
                }
                catch { };
            }
        }

        /// <summary>
        /// Không nhận ký tự là chữ, nhận ký tự là số
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tbsophong_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        /// <summary>
        /// Cập nhật thông tin phòng trong CSDL
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btthem_Click(object sender, EventArgs e)
        {
            XuLyCapNhatPhong xltp = new XuLyCapNhatPhong();
            if (xltp.ThemPhong(tbsophong.Text, cbloaiphong.Text, tbghichu.Text) == false)
            {
                MessageBox.Show("Thêm phòng thất bại");
            }
            else
            {
                MessageBox.Show("Thêm phòng thành công");
            }
            fCapNhatPhong_Load(sender, e);
            rbthem.Checked = true;
        }

        /// <summary>
        /// Cập nhật thông tin phòng trong CSDL
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btxoa_Click(object sender, EventArgs e)
        {
            XuLyCapNhatPhong xlxp = new XuLyCapNhatPhong();
            if (xlxp.XoaPhong(tbsophong.Text) == false)
            {
                MessageBox.Show("Xóa phòng thất bại");
            }
            else
            {
                MessageBox.Show("Xóa phòng thành công");
            }
            fCapNhatPhong_Load(sender, e);
            rbxoa.Checked = true;
        }

        /// <summary>
        /// Cập nhật thông tin phòng trong CSDL
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btsua_Click(object sender, EventArgs e)
        {
            XuLyCapNhatPhong xlsp = new XuLyCapNhatPhong();
            if (xlsp.SuaPhong(tbsophong.Text, cbloaiphong.Text, tbghichu.Text) == false)
            {
                MessageBox.Show("Sửa phòng thất bại");
            }
            else
            {
                MessageBox.Show("Sửa phòng thành công");
            }
            fCapNhatPhong_Load(sender, e);
            rbsua.Checked = true;
        }

        /// <summary>
        /// Đóng form Cập nhật phòng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bthuy_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// Cập nhật tình trạng đăng nhập của người dùng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer_Tick(object sender, EventArgs e)
        {
            if (MainForm.ktdangnhap != _ktdangnhap)
            {
                fCapNhatPhong_Load(sender, e);
            }
        }

        /// <summary>
        /// Thực hiện chức năng tương ứng đang chọn
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void fCapNhatPhong_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter && rbthem.Checked == true)
                btthem.PerformClick();
            else if (e.KeyCode == Keys.Enter && rbxoa.Checked == true)
                btxoa.PerformClick();
            else if (e.KeyCode == Keys.Enter && rbsua.Checked == true)
                btsua.PerformClick();
        }
    }
}
